/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package CiaAerea;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

/**
 *
 * @author mbm
 */
public class ClienteSerialize implements Serializable {
    private String nome;
    private String cpf;
    private String eMail;
    private String telefone;
    private String celular;
    private boolean isFidelidade;
    private String numeroFidelidade;
    private Endereco end;


    ClienteSerialize(String nome, String cpf, String eMail, String telefone, String celular, boolean isClienteFidelidade, String numeroFidelidade, Endereco end)
    {
      this.nome = nome;
      this.cpf = cpf;
      this.eMail = eMail;
      this.telefone = telefone;
      this.celular = celular;
      this.isFidelidade = isFidelidade;
      this.numeroFidelidade = numeroFidelidade;
      this.end = end;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public String geteMail() {
        return eMail;
    }

    public void seteMail(String eMail) {
        this.eMail = eMail;
    }

    public String getTelefone() {
        return telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    public String getCelular() {
        return celular;
    }

    public void setCelular(String celular) {
        this.celular = celular;
    }

    public boolean isIsFidelidade() {
        return isFidelidade;
    }

    public void setIsFidelidade(boolean isFidelidade) {
        this.isFidelidade = isFidelidade;
    }

    public String getNumeroFidelidade() {
        return numeroFidelidade;
    }

    public void setNumeroFidelidade(String numeroFidelidade) {
        this.numeroFidelidade = numeroFidelidade;
    }

    public Endereco getEnd() {
        return end;
    }

    public void setEnd(Endereco end) {
        this.end = end;
    }
    
    
    ClienteSerialize()
    {
        
    }
    
    public void escrever(ClienteSerialize dados) throws Exception
    {
        try
        {
            File arquivo = new File("cliente_"+cpf+".ser");
            if(arquivo.exists()){
                throw new Exception("Cliente já existente!");
            }
            else{
            ObjectOutputStream saida = new ObjectOutputStream(new FileOutputStream("cliente_"+cpf+".ser"));
            saida.writeObject(dados);
            }
            
        }catch(IOException ioException)
        {
            System.err.println(ioException.getMessage());
        }
    }
    
    public ClienteSerialize ler(String cpf)
    {
        ClienteSerialize dados = new ClienteSerialize();
        try
        {
            ObjectInputStream entrada = new ObjectInputStream(new FileInputStream("cliente_"+cpf+".ser"));
             
            dados = (ClienteSerialize) entrada.readObject(); 
            
            
            
            
        }catch(IOException ioException)
        {
            System.err.println(ioException.getMessage());
       
         } catch (ClassNotFoundException ex) {
            Logger.getLogger(ClienteSerialize.class.getName()).log(Level.SEVERE, null, ex);
        }
        finally
        {
           return dados; 
        }
    
    }
    
    public void remover(String cpf)
    {
        try
        {
           
           File file = new File("cliente_"+cpf+".ser");
           
           if(file.delete())
           {
               JOptionPane.showMessageDialog(null, "Arquivo deletado com sucesso!");
           }
           else
           {
               JOptionPane.showMessageDialog(null, "Problemas ao deletar o arquivo.");
           }
           
            
            
        }catch(Exception e)
        {
            System.err.println(e.getMessage());
        }
    }
    
    public void alterar(ClienteSerialize dados) throws Exception{
        
        try{
        ObjectOutputStream saida = new ObjectOutputStream(new FileOutputStream("cliente_"+dados.getCpf()+".ser"));
        saida.writeObject(dados);
        }catch(Exception e){
            throw new Exception("Erro ao Alterar!");
        }
            
        
    }
}
    

